/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ecom.dao;

import ecom.exception.DataAccessLayerException;
import ecom.entity.Store;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.criterion.Expression;

/**
 *
 * @author KENT
 */
public class StoreDAO extends AbstractDAO{

            private final static String ID_STORE = "idStore";


    public StoreDAO() {
    }

     /**
     * Crée un nouveau Store.
     * @param s Store à créer
     */
    public void create(Store s) throws DataAccessLayerException {
        super.saveOrUpdate(s);
    }


    /**
     * Supprime un Store de la base de données
     * @param s Store à supprimer
     */
    public void delete(Store s) throws DataAccessLayerException {
        super.delete(s);
    }

    /**
     * Recheche un Store dans la base de données
     * @param id id du Store à retourner
     * @return Store Retourner le Store cherché
     */
    public Store find(Integer id) throws DataAccessLayerException {
        return (Store) super.find(Store.class, id);
    }

    /**
     * Met à jour le Store en base de données
     * @param s Store à modifier
     */
    public void update(Store s) throws DataAccessLayerException {
        super.saveOrUpdate(s);
    }

    /**
     * Liste tous les Stores de la base de données
     * @return List<Store> retourne une liste de Store
     */
    public List<Store> findAll() throws DataAccessLayerException{
        return super.findAll(Store.class);
    }

    /**
     * Retourne un Store en fonction de sont id.
     * @param s id du Store
     * @return Store Retourne le Store correspondant
     */
    public Store findByIdStore(int s) {
        Store store = null;
         try {
            startOperation();
            Criteria crit = session.createCriteria(Store.class);
            crit.add(Expression.eq(ID_STORE, s));
            store = (Store) crit.uniqueResult();

            tx.commit();
        } catch (HibernateException e) {
            handleException(e);
        }

        return store;
    }

}
